package com.abc.example.dao;

import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.abc.example.entity.Orgnization;


/**
 * @className	: OrgnizationDao
 * @description	: 组织机构对象数据访问类
 * @summary		: 主数据表：exa_orgnizations
 * @history		: 
 * ------------------------------------------------------------------------------
 * date			version		modifier		remarks
 * ------------------------------------------------------------------------------
 * 2024/01/14	1.0.0		sheng.zheng		初版
 *
 */
@Mapper
public interface OrgnizationDao {
	/**
	 * @methodName	: insertItem
	 * @description	: 新增一个组织机构对象
	 * @param item	: 组织机构对象
	 * @return		: 受影响的记录数
	 * @history		: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public int insertItem(Orgnization item);

	/**
	 * @methodName		: insertItems
	 * @description		: 新增一批组织机构对象
	 * @param itemList	: 组织机构对象列表
	 * @return			: 受影响的记录数
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public int insertItems(List<Orgnization> itemList);

	/**
	 * @methodName		: updateItemByKey
	 * @description		: 根据key修改一个组织机构对象
	 * @param params	: 组织机构对象相关字段字典，修改字段均可选；key字段必选：
	 * 	{
	 * 		"orgId"	: 0,// 组织ID，必选
	 * 	}
	 * @return			: 受影响的记录数
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public int updateItemByKey(Map<String, Object> params);

	/**
	 * @methodName		: updateItems
	 * @description		: 根据条件批量修改组织机构对象的相关属性字段的值
	 * @param params	: 组织机构对象相关字段字典，至少需要一个修改字段和一个条件字段，修改字段和条件字段均可选；
	 * 	{
	 * 					  修改字段集如下：
	 * 		"zipcode"		: "",	// 邮编，可选
	 * 		"district"		: "",	// 行政区，省、市、区县名称，可选
	 * 		"districtLevel"	: 5,	// 行政级别，1-国家级、2-副国级、3-省部级、4、副省级、5-市级、6、副市级、7-区县、8-副县级、9-街道乡镇级，可选
	 * 		"remark"		: "",	// 备注，可选
	 * 		"operatorName"	: "",	// 操作人账号，可选
	 * 					  条件字段如下：
	 * 		"parentId"	: 0,	// 父组织ID，可选
	 * 		"orgIdList"	: [],	// 组织ID列表，list，可选
	 * 	}
	 * @return			: 受影响的记录数
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public int updateItems(Map<String, Object> params);

	/**
	 * @methodName	: deleteItemByKey
	 * @description	: 根据key删除一个组织机构对象
	 * @param orgId	: 组织ID
	 * @return		: 受影响的记录数
	 * @history		: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public int deleteItemByKey(@Param("orgId") Integer orgId);

	/**
	 * @methodName		: deleteItems
	 * @description		: 根据条件批量删除组织机构对象
	 * @param params	: 条件字段字典，形式如下：
	 * 	{
	 * 		"orgIdList"	: [],	// 组织ID列表，list，可选
	 * 		"parentId"	: 0,	// 父组织ID，可选
	 * 	}
	 * @return			: 受影响的记录数
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public int deleteItems(Map<String, Object> params);	

	/**
	 * @methodName	: selectItemByKey
	 * @description	: 根据key查询一个组织机构对象
	 * @param orgId	: 组织ID
	 * @return		: 组织机构对象
	 * @history		: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public Orgnization selectItemByKey(@Param("orgId") Integer orgId);

	/**
	 * @methodName		: selectItems
	 * @description		: 根据条件查询组织机构对象列表，用于前端和内部查询记录
	 * @param params	: 查询条件参数，形式如下：
	 * 	{
	 * 		"orgId"				: 0,	// 组织ID，可选
	 * 		"orgIdList"			: [],	// 组织ID列表，list，可选
	 * 		"orgName"			: "",	// 组织机构名称，可选
	 * 		"orgNameLike"		: "",	// 组织机构名称，like，可选
	 * 		"orgFullname"		: "",	// 组织机构全称，可选
	 * 		"orgFullnameLike"	: "",	// 组织机构全称，like，可选
	 * 		"orgType"			: 0,	// 机构类型，1-本公司，2-客户公司，其它待扩展，可选
	 * 		"orgTypeList"		: [],	// 机构类型列表，list，可选
	 * 		"leader"			: "",	// 负责人名称，可选
	 * 		"leaderLike"		: "",	// 负责人名称，like，可选
	 * 		"contacts"			: "",	// 联系人，可选
	 * 		"contactsLike"		: "",	// 联系人，like，可选
	 * 		"phoneNumber"		: "",	// 联系电话，可选
	 * 		"phoneNumberLike"	: "",	// 联系电话，like，可选
	 * 		"email"				: "",	// Email，可选
	 * 		"emailLike"			: "",	// Email，like，可选
	 * 		"addressLike"		: "",	// 地址，like，可选
	 * 		"zipcode"			: "",	// 邮编，可选
	 * 		"district"			: "",	// 行政区，省、市、区县名称，可选
	 * 		"districtLike"		: "",	// 行政区，省、市、区县名称，like，可选
	 * 		"districtLevel"		: 5,	// 行政级别，1-国家级、2-副国级、3-省部级、4、副省级、5-市级、6、副市级、7-区县、8-副县级、9-街道乡镇级，可选
	 * 		"districtLevelList"	: [],	// 行政级别列表，list，可选
	 * 		"parentId"			: 0,	// 父组织ID，可选
	 * 		"remarkLike"		: "",	// 备注，like，可选
	 * 		"deleteFlag"		: 0,	// 记录删除标记，0-正常、1-已删除，可选
	 * 		"parentOrgName"		: "",	// 父组织机构名称，可选
	 * 		"parentOrgNameLike"	: "",	// 父组织机构名称，like，可选
	 * 		"offset"			: 0,	// limit记录偏移量，可选
	 * 		"rows"				: 20,	// limit最大记录条数，可选
	 * 		"sortList"			: [],	// 排序选项，SortField对象列表，只支持数据表字段属性，可选
	 * 	}
	 * @return			: 组织机构对象列表
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public List<Orgnization> selectItems(Map<String, Object> params);

	/**
	 * 
	 * @methodName		: selectCount
	 * @description		: 查询符合查询条件的记录数
	 * @param params	: @see {@link OrgnizationDao#selectItems}
	 * @return			: 记录数
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks                   
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public Integer selectCount(Map<String, Object> params);	

	/**
	 * @methodName		: selectItemByOrgName
	 * @description		: 根据orgName查询组织机构对象
	 * @param orgName	: 组织机构名称
	 * @return			: 组织机构对象
	 * @history			: 
	 * ------------------------------------------------------------------------------
	 * date			version		modifier		remarks
	 * ------------------------------------------------------------------------------
	 * 2024/01/14	1.0.0		sheng.zheng		初版
	 *
	 */
	public Orgnization selectItemByOrgName(@Param("orgName") String orgName);		

}